﻿using System;
using System.Text;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques;
using BussinessLogicTecnoPez.Produccion.Clasificacion_e_Incubacion;

public partial class Modules_EnfermedadesControlEstanque_InsertarControl : System.Web.UI.Page
{
    private Empleado PEmpleado
    {
        get { return this.ViewState["empleado"] as Empleado; }
        set{this.ViewState["empleado"]=value;}
    }

    private DateTime Fecha
    {
        get { return Convert.ToDateTime(this.ViewState["fecha"]) ; }
        set { this.ViewState["fecha"] = value; }
    }

    private ParametroControl PParametro
    {
        get { return this.ViewState["Parametro"] as ParametroControl; }
        set { this.ViewState["Parametro"] = value; }
    }

    private Estanque PEstanque
    {
        get { return this.ViewState["IdEstanque"] as Estanque; }
        set { this.ViewState["IdEstanque"] = value; }
    }

    private PlanControl PPlanControl
    {
        get { return this.ViewState["plancontrol"] as PlanControl; }
        set { this.ViewState["plancontrol"] = value; }
    }

    private DateTime PlanFecha
    {
        get { return Convert.ToDateTime(this.ViewState["PlanFecha"]); }
        set { this.ViewState["PlanFecha"] = value; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            this.PEmpleado = Tecnopez.Globals.Functions.getEmpleadoLogueado(this);
            this.Fecha = DateTime.Now;

            Estanque.getManager.ClearFilters();
            Estanque.getManager.AddFilter("idestanque", BussinessLogicTecnoPez.GenericManager<Estanque>.filterOperator.Equals, Convert.ToInt32(Request["idestanque"]));
            this.PEstanque = Estanque.getManager.GetOne();

            ParametroControl.getManager.ClearFilters();
            ParametroControl.getManager.AddFilter("idparametrocontrol", BussinessLogicTecnoPez.GenericManager<ParametroControl>.filterOperator.Equals, Convert.ToInt32(Request["idparametro"]));
            this.PParametro = ParametroControl.getManager.GetOne();

            if (Request["idPlanControl"] != null && Request["fecha"] != null && Request["idPlanControl"] != "" && Request["fecha"]!= "")
            {
                int idPlanControl = Convert.ToInt32(Request["idPlanControl"]);
                this.PlanFecha = DateTime.Parse(Convert.ToString(Request["fecha"]));

                this.PPlanControl= PlanControl.getManager.GetOneByPrimaryKey(Convert.ToInt32(Request["idPlanControl"]));

            }

            cargarDatos();
            setearControles();
        }
        catch (Exception ex)
        {
            this.lblMessage.Text = "No se pudieron cargar los datos";
        }
    }

    private void cargarDatos()
    {
        this.lblEmpleado.Text = this.PEmpleado.Apellido + ", " + this.PEmpleado.Nombre;
        this.lblFecha.Text = this.Fecha.ToShortDateString();
        this.lblEstanque.Text = this.PEstanque.descripcion;
        this.lblParametro.Text = this.PParametro.Descripcion;
        this.lblUnidadMedida.Text = this.PParametro.UnidadMedida.Abreviatura;
    }

    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        Clasificacion objClasificacion = new Clasificacion();
        objClasificacion.obtenerUltima(this.PEstanque.idEstanque);

        Controles control = new Controles();
        control.ParametroControl = this.PParametro;
        control.Empleado = this.PEmpleado;
        control.Estanque = this.PEstanque;
        control.Fecha = this.Fecha;

        if (objClasificacion != null)
        {
            control.Especie = objClasificacion.especie;
            control.Clasificacion = objClasificacion;

            if (objClasificacion.especie!=null )
            {
                if (objClasificacion.especie.DetalleParametroControl != null)
                {
                    
                    foreach (ItemDetalleEspecieParametroControl item in objClasificacion.especie.DetalleParametroControl)
                    {
                        if (item.ParametroControl.IdParametroControl == this.PParametro.IdParametroControl)
                        {
                            control.Valormaximo = item.ValorMaximo;
                            control.Valorminimo = item.ValorMinimo;
                            control.Valoroptimo = item.ValorOptimo;
                            break;
                        }
                    }
                }
            }
        }

        decimal valor;
        try
        {
            valor = Convert.ToDecimal(txtValor.Text);
        }
        catch
        {
            lblMessage.Text = "El valor es incorrecto";
            return;
        }
        control.ValorObtenido= valor;

        if (Controles.getManager.Insert(control))
        {
            StringBuilder strScript = new StringBuilder();
            strScript.Append("window.opener.reload(); window.close();");
            this.ClientScript.RegisterClientScriptBlock(this.GetType(),"reload",strScript.ToString(),true);

            if (this.PPlanControl!= null)
            {
                foreach (ItemDetallePlanControl item in PPlanControl.DetallePlanControl)
                {
                    if (item.ParametroControl.IdParametroControl == this.PParametro.IdParametroControl && item.Fecha == this.PlanFecha)
                    {
                        item.Control = control;
                        item.ResultadoEsperado = control.Valoroptimo;
                        item.ResultadoMedido = control.ValorObtenido;
                    }
                }

                PlanControl.getManager.Update(this.PPlanControl);
            }
        }

        else
        {
            this.lblMessage.Text = "No se pudo ingresar el control";
        }
    }

    private void setearControles()
    {
        btnSalir.OnClientClick = "window.close();";
    }
}
